# -*- coding: utf-8 -*-
from sklearn.preprocessing import StandardScaler
import numpy as np
import pandas as pd
from prepare_data import series_to_supervised
import pickle

def prepare_data(time_series, verbose=True):
    '''
    数据准备，导出时序数据
    '''
    # 找出所有的事故类别
    problem_classes = list(np.unique(time_series['事件类别']))
    
    data = pd.DataFrame()
    # 
    for problem_class in problem_classes:
        time_series_class = time_series.loc[time_series['事件类别']==problem_class]
        # 以月份为单位（忽视年份），统计数据
        month_data = time_series_class.groupby(time_series['接警日期'].dt.strftime('%B'))\
                            .count().iloc[:, 1].values
        month_data = pd.DataFrame(data=month_data, columns=[f'{problem_class}事故次数'])
        # 数据拼接
        data = pd.concat([data, month_data], axis=1)
    
    # 各事件类别的每月发生次数：
    data = data.fillna(0)
    
    # 数据标准化
    cols = data.columns
    scaler = StandardScaler()
    month_data_after = scaler.fit_transform(data)
    
    # 保存标准化后的数据：
    month_data_after = pd.DataFrame(month_data_after, columns=cols)
    
    
    # 滑动窗口
    month_data_window = series_to_supervised(month_data_after, n_in=1, \
                                    n_out=1, dropnan=True)

    if verbose:
        data.to_excel(r'../附件/各类事件发生次数月数据(标准化前).xlsx')
        month_data_after.to_excel(r'../附件/各类事件发生次数月数据(标准化后).xlsx')
        month_data_window.to_excel(r'../附件/各类事件（滑动窗口后）月次数数据.xlsx')
        
    



if __name__ == '__main__':
    path = r'../附件/附件2：某地消防救援出警数据.xlsx'
    time_series = pd.read_excel(path)
    prepare_data(time_series, verbose=True)


